package com.xingchi.tornado.security.handler;

import com.xingchi.tornado.security.model.LoginParameter;
import org.springframework.security.core.Authentication;

/**
 * 登录处理器
 *
 * @author xingchi
 * @date 2024/11/27 21:00
 */
public interface LoginPostProcessor<T extends Authentication> {

    /**
     * 前置处理器
     *
     * @param authentication 认证对象，不完全体
     */
    default void prePostProcess(LoginParameter loginParameter) {

    }

    /**
     * 后置处理器
     *
     * @param loginData 登录数据
     */
    default void postPostProcess(T authentication) {

    }

    /**
     * 是否需要执行该处理器
     *
     * @param authentication 认证对象
     * @return 是否需要执行该处理器
     */
    boolean supports(Class<? extends Authentication> authentication);
}
